Computer virtualization is a technique that involves encapsulating a physical computing machine platform into a virtual machine (VM) executed under the control of virtualization software on a hardware computing platform. Virtualization software enables multiple virtual machines to be run on a single hardware computing platform, and may be used to manage the allocation of computing resources to each virtual machine.
VMs executing on a host machine are commonly referred to as a “guest.” And each guest executes applications, such as a productivity application, webserver, database, and/or application servers. Spatial locality is a property of an application that states that if an application accesses a given memory address, it is likely to subsequently access nearby memory addresses. Applications exhibit spatial locality in the guest's virtual page number address space, referred to herein as GVPN space.
Virtualization software operates at the guest physical layer, without easily obtainable information of how guest physical page numbers (GPPNs) correspond to GVPNs. The locality exhibited by applications in the GVPN space may not translate to the guest physical layer because the guest operating system (OS) controls these translations. More specifically, if the guest OS maps GVPN V to P, it is not guaranteed that GVPN V+1 is mapped to P+1. Even if the guest OS tries to maintain spatial locality in the GPPNs, it can be difficult to preserve due to internal fragmentation and swapping. Some guest operating systems, such as the Windows®, operating system simply do not attempt to preserve spatial locality at the physical layer. Even in the cases of operating systems that prefer to maintain spatial locality at the physical layer, such as Linux® operating system, such locality will eventually be lost after repeated allocations/deallocations.